package com.mmy.controller.scenic;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.fastjson.JSON;
import com.mmy.controller.Common;
import com.mmy.controller.UtilConstants;
import com.mmy.domain.scenic.TScenicPlan;
import com.mmy.domain.scenic.VScenicPlan;
import com.mmy.domain.sys.TSysUser;
import com.mmy.service.scenic.impl.ScenicBaseServiceImpl;
import com.mmy.service.scenic.impl.ScenicPlanServiceImpl;

/**
 * 类的介绍：电子票计划
 *
 * @author shangzl
 * @date 创建日期：
 * @version 1.0
 */

@Controller
public class ScenicPlanController {

	@Autowired
	ScenicPlanServiceImpl scenicPlanServiceImpl;
	@Autowired
	ScenicBaseServiceImpl scenicBaseServiceImpl;
	// 进入修改景区计划时用到 2020.12.28 hanxl
	@Autowired
	Common common;

	/**
	 * 函数功能说明： 跳转
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl 修改人 hanxl
	 * @date 创建日期 修改时间2020.12.28
	 */
	@RequestMapping(value = "/scenicplanindex")
	public String ToScenicPlan(HttpServletRequest request, String pageNumber, String pageSize, Model model,
			HttpSession session) {
		List<VScenicPlan> lstScenicPlan = scenicPlanServiceImpl.findByScenicID(pageNumber, pageSize,
				request.getParameter("iScenicID"));
		model.addAttribute("lstScenicPlan", lstScenicPlan);
		HashMap<String, Integer> mapPage = scenicPlanServiceImpl.mapScenicPlan(pageNumber, pageSize,
				request.getParameter("iScenicID"));
		model.addAttribute("iPageNo", mapPage.get("iPageNo"));
		model.addAttribute("iTotalCount", mapPage.get("iTotalCount"));
		model.addAttribute("iMaxPage", mapPage.get("iMaxPage"));
		model.addAttribute("iPageSize", mapPage.get("iPageSize"));
		model.addAttribute("strScenicID", request.getParameter("iScenicID"));
		return "webbackground/scenicmanagement/ScenicPlanIndex";

	}

	/**
	 * 函数功能说明： 创建景区计划
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl 修改人 hanxl
	 * @date 创建日期 修改时间2020.12.28
	 */
	@RequestMapping(value = "/createscenicplan")
	public String ToCreateScenicPlan(HttpServletRequest request, Model model) {
		String strScenicID = request.getParameter("iScenicID");
		model.addAttribute("strScenicID", strScenicID);
		return "webbackground/scenicmanagement/CreateScenicPlan";
	}

	/**
	 * 函数功能说明： 新建电子票计划
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl 修改人 hanxl
	 * @date 创建日期 修改时间2020.12.28
	 */
	@RequestMapping(value = "/savecreatescenicplan")
	public String saveCreateScenicPlan(TScenicPlan tScenicPlan, String strStartDate, String strEndDate,
			HttpSession session) {
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		scenicPlanServiceImpl.createScenicPlan(tScenicPlan, strStartDate, strEndDate, sessionSysUser);
		return "redirect:scenicplanindex?iScenicID=" + tScenicPlan.getScenicID();

	}

	/**
	 * 函数功能说明：进入 修改电子票计划页面
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl 修改人 hanxl
	 * @date 创建日期 修改时间2020.12.28
	 */

	@RequestMapping(value = "/toupdatescenicplan")
	public String toUpdateScenicPlan(HttpServletRequest request, Model model) {

		TScenicPlan dbScenicPlan = scenicPlanServiceImpl.findByPlanID(request.getParameter("iPlanID"));
		model.addAttribute("dbScenicPlan", dbScenicPlan);
		String strStartDate = common.getTableDate(dbScenicPlan.getStartDate(), UtilConstants.DateStyle.YYYY_MM_DD);
		model.addAttribute("strStartDate", strStartDate);
		String strEndDate = common.getTableDate(dbScenicPlan.getEndDate(), UtilConstants.DateStyle.YYYY_MM_DD);
		model.addAttribute("strEndDate", strEndDate);
		return "webbackground/scenicmanagement/UpdateScenicPlan";

	}

	/**
	 * 函数功能说明： 修改电子票计划
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl 修改人 hanxl
	 * @date 创建日期 修改时间2020.12.28
	 */
	@RequestMapping(value = "/saveupdatescenicplan")
	public String saveUpdateScenicPlan(TScenicPlan tScenicPlan, String strStartDate, String strEndDate,
			HttpSession session) {
		TSysUser sessionSysUser = (TSysUser) session.getAttribute("tSysUser");
		scenicPlanServiceImpl.updateScenicPlan(tScenicPlan, strStartDate, strEndDate, sessionSysUser);
		return "redirect:scenicplanindex?iScenicID=" + tScenicPlan.getScenicID();
	}

	/**
	 * 函数功能说明： 删除电子票计划
	 *
	 * @param 参数说明
	 * @return 返回值说明 jsp页面
	 * @throws 异常处理说明
	 * @author 创建人 shangzl 修改人 hanxl
	 * @date 创建日期 修改时间2020.12.28 2021.01.20
	 */

	@PostMapping("/delscenicplan")
	@ResponseBody
	public Map<String, Object> DelScenicPlan(String checkList) {

		Map<String, Object> map = scenicPlanServiceImpl.delScenicPlan(checkList);

		return map;
	}

	/**
	 * 函数功能说明： 景区预留页根据时间查询ScenicPlan
	 *
	 * @param 参数说明
	 * @return 返回值说明 VScenicPlan
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.1.15
	 */
	@ResponseBody
	@RequestMapping("/queryplanscenic")
	public Map<String, Object> QueryPlan(@RequestParam("date") Date date,
			@RequestParam("scenicID") String strScenicID) {

		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
		String strNowDate = dateFormat.format(date);
		List<Map<String, Object>> result = scenicPlanServiceImpl.findPlanValidMap(Integer.parseInt(strScenicID),
				strNowDate);
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("ticketName", result);
		return map;
	}

	/**
	 * 函数功能说明：景区预留页查询价格
	 *
	 * @param 参数说明
	 * @return 返回值说明 String
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.1.15
	 */
	@ResponseBody
	@RequestMapping("/querypricescenic")
	public String TestQueryPrice(@RequestParam("plan") String strJson) {

		List<TScenicPlan> lstScenicPlan = JSON.parseArray(strJson, TScenicPlan.class);
		// logger.info(lstScenicPlan.toString());
		BigDecimal total = new BigDecimal("0");
		for (TScenicPlan tScenicPlan : lstScenicPlan) {
			// logger.info(tScenicPlan.toString());
			Integer planID = tScenicPlan.getPlanID();
			TScenicPlan dbScenicPlan = scenicPlanServiceImpl.findByPlanID(planID.toString());
			BigDecimal price = dbScenicPlan.getPrice();
			Integer num = tScenicPlan.getNumber();
			BigDecimal sum = price.multiply(BigDecimal.valueOf(num));
			total = total.add(sum);
		}
		return total.toString();
	}

}
